_require local "../../../../basis.smi"
_require local "../../../extensions/format-utils/main/SmlppgUtil.ppg.smi"

_require "../../../../smlformat-lib.smi"

structure FFIAttributes =
struct

  datatype callingConvention =
      FFI_CDECL
    | FFI_STDCALL
    | FFI_FASTCC
 
  type attributes =
       {
         isPure: bool,
         fast: bool,
         unsafe: bool,
         causeGC: bool,
         callingConvention: callingConvention option
       }

  val defaultFFIAttributes : attributes

  val format_attributes
      : attributes -> SMLFormat.FormatExpression.expression list

  datatype globalSymbolKind = 
      ForeignCodeSymbol

  val format_globalSymbolKind
      : globalSymbolKind -> SMLFormat.FormatExpression.expression list

end
